From 44d7cc5f5d76daf7a9c7b956e474dff411954980 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Thu, 27 Apr 2006 09:56:21 +0100 Subject: [PATCH] Occasionally large smp machines fail to reboot properly and die under an IPI storm of smp_call_function() to machine_reboot. Only the boot processor needs to run machine_restart, so send an IPI to CPU0. Original patch by: Ryan Harper Signed-off-by: Keir Fraser --- xen/arch/x86/shutdown.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/shutdown.c b/xen/arch/x86/shutdown.c index 97b41a94ca..bf9015280a 100644 --- a/xen/arch/x86/shutdown.c +++ b/xen/arch/x86/shutdown.c @@ -218,7 +218,9 @@ void machine_restart(char * __unused) /* Ensure we are the boot CPU. */ if ( GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_physical_apicid ) { - smp_call_function((void *)machine_restart, NULL, 1, 0); + /* Send IPI to the boot CPU (logical cpu 0). */ + on_selected_cpus(cpumask_of_cpu(0), (void *)machine_restart, + NULL, 1, 0); for ( ; ; ) safe_halt(); } -- 2.30.2